<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /**
 *  function flatten(obj) {
        // 你的代码
        //   定义一个空对象
        let newObj = {};
        for (let key in obj) {
            console.log(key);
            
        }
    }


    // 最终效果是执行
    flatten({
        a: {
            b: 1,
            c: 2,
            d: {
                e: 5
            }
        },
        b: [1, 3, {
            a: 2,
            b: 3
        }],
        c: 3
    })

    // 得到
    // {
    //   'a.b': 1,
    //   'a.c': 2,
    //   'a.d.e': 5,
    //   'b[0]': 1,
    //   'b[1]': 3,
    //   'b[2].a': 2,
    //   'b[2].b': 3，
    //   'c': 3
    // } 
 */

        let result = flatten({
            a: {
                b: 1,
                c: 2,
                d: {
                    e: 5
                }
            },
            b: [1, 3, {
                a: 2,
                b: 3
            }],
            c: 3
        })


        function flatten(obj) {
            var isR = true;
            for (let ob in obj) {
                if (obj[ob] instanceof Array) {
                    for (let index =0;index<obj[ob].length;index++) {
                        obj[ob + "[" + index + "]"] = obj[ob][index];
                    }
                    delete obj[ob]
                    isR = false;
                } else if (obj[ob] instanceof Object) {
                    for (let ob2 in obj[ob]) {
                        obj[ob + "." + ob2] = obj[ob][ob2];
                    }
                    delete obj[ob]
                    isR = false;
                } 
            }
            if (isR) {
                return obj;
            } else {
                return flatten(obj)
            }
        }
        console.log(result);
// for(let i in a){
//     console.log(i);
// }
    </script>
</body>

</html>